#include <iostream>
using namespace std;


// 父类
class Base
{
public:
    Base()
    {
        m_A = 100;
    }

    void func()
    {
        cout << "Base - func()调用" << endl;
    }

    void func(int a)
    {
        cout << "Son - func(int a)调用" << endl;
    }
    int m_A;
};



// 公共继承
class Son : public Base
{
public:
    Son()
    {
        m_A = 200;
    }

    void func()
    {
        cout << "Son - func()调用" << endl;
    }
    
    int m_A;
};

// 同名成员属性处理
void test01() 
{
    Son  s;
    cout << "Son m_A  = " << s.m_A << endl;
    // 如果通过子类对象访问，到父类中的同名成员，需要加一个作用域
    cout << "Base m_A = " << s.Base::m_A << endl;

} 

// 同名函数处理方式
void test02()
{
    Son  s;
    s.func();
    s.Base::func();
    // 同名成员函数在父类存在重载时，调用存在错误
    // 如国子类中出现和父类同名的成员函数，子类的同名成员会隐藏掉父类中所有同名成员函数；不可直接访问！
    s.Base::func(100);
}

int main()
{
    // test01();
    test02();
    // cout << "hello" << endl;
    return 0;
}